#include"LStack.h"
#include"Queue.h"
#include"Tree.h"
#include"Heap.h"

//void LStackTest()
//{
//	STNode st = { 0 };
//	STInit(&st);
//	STPush(&st,1);
//	STPush(&st,2);
//	STPush(&st,3);
//	STPush(&st,4);
//	STPush(&st,5);
//	STPush(&st,6);
//	printf("%d\n", STSize(&st));
//	STDestroy(&st);
//	while (!STEmpty(&st))
//	{
//		printf("%d\n", STTop(&st));
//		STPop(&st);
//	}
//}

//void QueueTest()
//{
//	Queue que = { 0 };
//	QueueInit(&que);
//
//	QueuePush(&que, 1);
//	QueuePush(&que, 2);
//	QueuePush(&que, 3);
//	QueuePush(&que, 4);
//	QueuePush(&que, 5);
//	QueuePush(&que, 6);
//
//	//QueuePop(&que);
//	//QueuePop(&que);
//	//QueuePop(&que);
//	//QueuePop(&que);
//	//QueuePop(&que);
//	//QueuePop(&que);
//
//	while (!QueueEmpty(&que))
//	{
//		printf("QueueSize(%d)-> %d \n",QueueSize(&que),QueueFront(&que));
//		QueuePop(&que);
//	}
//
//	QueueDestroy(&que);
//}

//#define k 4
//void TreeTest()
//{
//	char arr[] = "ABD##E#H##CF##G##";
//	int pi = 0;
//	BTNode* root = BTCreat(arr, sizeof(arr), &pi);
//	BTDestroy(root);
//	//printf("BTSize(root): %d \n", BTSize(root));
//	//printf("BTLeafSize(root): %d \n", BTLeafSize(root));
//	//printf(" BTKLeafSize(root,%d): %d \n", k, BTKLeafSize(root, k));
//	//BTNode* fin = BTFind(root, 'H');
//	//printf("fin->val:%c \n", fin->val);
//	//BTPrevOrder(root);
//	//printf("\n");
//	//BTLeveOrder(root);
//}

void HeapTest()
{
	HPNode hp = { 0 };
	HPInit(&hp);
	HPPush(&hp, 1);
	HPPush(&hp, 2);
	HPPush(&hp, 3);
	HPPush(&hp, 4);
	HPPush(&hp, 5);
	HPPush(&hp, 213);
	HPPush(&hp, 0);
	HPPush(&hp, 32);

	while (!HPEmpty(&hp))
	{
		printf("%d ", HPTop(&hp));
		HPPop(&hp);
	}
}
int main()
{
	//LStackTest();

	//QueueTest();

	//TreeTest();

	HeapTest();

	return 0;
}